Package com.poker.server

Source Code of com.poker.server.PokerServiceImpl

package com.poker.server;
import java.util.Date;
import java.text.DateFormat;
import java.util.List;

import com.poker.client.*;
import com.poker.shared.*;
import com.poker.client.PokerService;
import com.google.appengine.api.channel.ChannelMessage;
import com.google.appengine.api.channel.ChannelService;
import com.google.appengine.api.channel.ChannelServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.googlecode.objectify.ObjectifyService;
import com.google.gwt.user.server.rpc.XsrfProtectedServiceServlet;

public class PokerServiceImpl extends RemoteServiceServlet implements PokerService{
    private static final long serialVersionUID = 1L;
    private String waitUserId="";
    private String waitNickName="";
    ChannelService channelService = ChannelServiceFactory.getChannelService();
    static {        
          // register entity
          ObjectifyService.register(MatchInfo.class);
          ObjectifyService.register(PlayerInfo.class);
          ObjectifyService.register(GamePeriodData.class);
          ObjectifyService.register(OtherPlayerInfo.class);
      }
     
   
    /**
     * start a game by inputing a email
     */
    @Override
      public void sendNewMatch(String p1Email, String p2Email, String state) {         
              createNewMatch(p1Email, p2Email, state);
      }
   
    private Long createNewMatch(String p1Email, String p2Email, String state) {

          Long matchId = System.currentTimeMillis();
       
          DataOperation.newMatchTransaction(matchId, p1Email, p2Email, state, p2Email,new Date());
        
          channelService.sendMessage(new ChannelMessage(p1Email, "N,"+matchId));
          channelService.sendMessage(new ChannelMessage(p2Email, "N,"+matchId));
          return matchId;
     }
   
    @Override
      public List<String> requestMatchList(String userid) {
              return DataOperation.getMatchStringList(userid);
      }
     
    @Override
    public void deleteMatchFromPlayer(String email, Long matchId) {
              DataOperation.deleteMatchFromPlayer(email, matchId);

      }
   
    @Override
    public String getStateWithMatchId(Long matchId) {
          return DataOperation.getStateAndPlayerAndTurnInfoWithMatchId(matchId);
      }
    /*
    @Override
    public String Move(String state, String id1, String id2){    
       channelService.sendMessage(new ChannelMessage(id2,"A,"+state));
       channelService.sendMessage(new ChannelMessage(id1,"A,"+state));
       return state;
    }
    */
   
    /**
     * send move
     */
    @Override
    public String AMove(String state, Long matchId, String id1, String id2){ 
    
         String turn= DataOperation.getTurnWithMatchId(matchId);
         turn = turn.equals(id1) ? id2 : id1;
         DataOperation.updateMatch(new Long(matchId), state, turn);
         channelService.sendMessage(new ChannelMessage(id2,"C,"+state));
         channelService.sendMessage(new ChannelMessage(id1,"C,"+state));     
         return state;
    }
   
    /**
     * send the last move
     */
    @Override
    public String EndMove(String state, Long matchId, String id1, String id2, int meID){ 
    
         String turn= DataOperation.getTurnWithMatchId(matchId);
         turn = turn.equals(id1) ? id1 : id2;
         DataOperation.updateMatch(new Long(matchId), state, turn);
         channelService.sendMessage(new ChannelMessage(id2,"C,"+state));
         channelService.sendMessage(new ChannelMessage(id1,"C,"+state));
         Date currentDate = new Date();
         String currentDateString = DataOperation.dateToString(currentDate);
        
         String myRankAndRD = DataOperation.getRankAndRD(id1);
       String myRankString = myRankAndRD.split(" ")[0];
       String myRDString = myRankAndRD.split(" ")[1];
       int myRank = Integer.valueOf(myRankString);      
       int myRD = Integer.valueOf(myRDString);
             double myS;
            
             String oppRankAndRD = DataOperation.getRankAndRD(id2);
          String oppRankString = oppRankAndRD.split(" ")[0];
          String oppRDString = oppRankAndRD.split(" ")[1];
          int oppRank = Integer.valueOf(oppRankString);
          int oppRD = Integer.valueOf(oppRDString);
          double oppS;
         
          State st=StateSerializer.unserializeState(state);
             if(meID==0){
              if(st.getPlayers().get(0).getResult()==GameOver.Result.WIN){
                myS=1.0;
                if(st.getPlayers().get(1).getResult()==GameOver.Result.WIN)
                     oppS=1.0;
                else if(st.getPlayers().get(1).getResult()==GameOver.Result.LOSE)
                   oppS=0;
                else
                   oppS=0.5;
              }                
              else if(st.getPlayers().get(0).getResult()==GameOver.Result.LOSE){
                myS=0.0;
                  if(st.getPlayers().get(1).getResult()==GameOver.Result.WIN)
                       oppS=1.0;
                   else if(st.getPlayers().get(1).getResult()==GameOver.Result.LOSE)
                     oppS=0;
                   else
                     oppS=0.5;
               }else{
                  myS=0.5;
                  if(st.getPlayers().get(1).getResult()==GameOver.Result.WIN)
                       oppS=1.0;
                   else if(st.getPlayers().get(1).getResult()==GameOver.Result.LOSE)
                     oppS=0;
                   else
                     oppS=0.5;
               }
                  
             }else{
               if(st.getPlayers().get(1).getResult()==GameOver.Result.WIN){
                 myS=1.0;
                 if(st.getPlayers().get(0).getResult()==GameOver.Result.WIN)
                      oppS=1.0;
                 else if(st.getPlayers().get(0).getResult()==GameOver.Result.LOSE)
                    oppS=0;
                 else
                    oppS=0.5;
                }                
                else if(st.getPlayers().get(1).getResult()==GameOver.Result.LOSE){
                 myS=0.0;
                   if(st.getPlayers().get(0).getResult()==GameOver.Result.WIN)
                     oppS=1.0;
                else if(st.getPlayers().get(0).getResult()==GameOver.Result.LOSE)
                   oppS=0;
                else
                   oppS=0.5;
                 }else{
                   myS=0.5;
                   if(st.getPlayers().get(0).getResult()==GameOver.Result.WIN)
                        oppS=1.0;
                    else if(st.getPlayers().get(0).getResult()==GameOver.Result.LOSE)
                      oppS=0;
                    else
                      oppS=0.5;
                 }
             }
              
             String rankAndRD1=DataOperation.updateGamePeriodData(id1, currentDateString, myRD,(double) myRank, oppS);
             String rank1=rankAndRD1.split(" ")[0];
             String RD1=rankAndRD1.split(" ")[1];
             channelService.sendMessage(new ChannelMessage(id1,"R"+","+rank1+","+RD1));
             String rankAndRD2=DataOperation.updateGamePeriodData(id2, currentDateString,oppRD, (double) oppRank, myS);
             String rank2=rankAndRD2.split(" ")[0];
             String RD2=rankAndRD2.split(" ")[1];
             channelService.sendMessage(new ChannelMessage(id2,"R"+","+rank2+","+RD2));
         return state;
    }
     //get rank and RD
    @Override
    public String getRank(String email){
      String rankAndRD = DataOperation.getRankAndRD(email);
      String rank = "1500";
        String RD = "350";
     
        if (rankAndRD != null) {          
          rank = rankAndRD.split(" ")[0];        
         RD = rankAndRD.split(" ")[1];
      }
      return  "R"+","+rank + "," + RD;

    }
      //update player information
    @Override
    public void updatePlayerInfo(String email, String name){
      PlayerInfo p = DataOperation.getPlayer(email);
      Date date = new Date();
      DateFormat dtf = DateFormat.getDateInstance();
          String formatedDate = dtf.format(date);
          if (p != null) {
            p.name = name;
            if(p.gamePeriodData == null|| !p.gamePeriodData.getDate().equals(formatedDate)) {
                     p.gamePeriodData = new GamePeriodData(formatedDate);
              }
            DataOperation.savePlayer(p);
          }
        else {
          PlayerInfo playerInfo = new PlayerInfo(email, name);
          playerInfo.gamePeriodData = new GamePeriodData(formatedDate);
          DataOperation.savePlayer(playerInfo);
        }
    }
}
TOP

Related Classes of com.poker.server.PokerServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.